package utils;

import org.apache.commons.lang3.ArrayUtils;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @desacription 统一工具类
 * @date 2018年12月29日 8:40
 */
public class ToolUtil {

    /**
     * 判断不为空 返回true
     * */
    public static boolean isNotEmpty(Object a){
        return !isEmpty(a);
    }

    /**
     * 判断为空 返回true
     * */
    public static boolean isEmpty(Object a) {
        if (a == null) {
            return true;
        } else {
            if (a instanceof String) {
                if ("".equals(a.toString().trim())) {
                    return true;
                }
            } else if (a instanceof List) {
                if (((List)a).size() == 0) {
                    return true;
                }
            } else if (a instanceof Map) {
                if (((Map)a).size() == 0) {
                    return true;
                }
            } else if (a instanceof Set) {
                if (((Set)a).size() == 0) {
                    return true;
                }
            } else if (a instanceof Object[]) {
                if (((Object[])((Object[])a)).length == 0) {
                    return true;
                }
            } else if (a instanceof int[]) {
                if (((int[])((int[])a)).length == 0) {
                    return true;
                }
            } else if (a instanceof long[] && ((long[])((long[])a)).length == 0) {
                return true;
            }

            return false;
        }
    }

    /**
     * 判断数组中是否含有某个字符串
     * */
    public static boolean isHaveStr(String[] arr, String targetValue) {
        return ArrayUtils.contains(arr, targetValue);
    }

    /**
     * 判断字符串(','分割)中是否含有某个字符串
     * */
    public static boolean isHaveStr(String str, String targetValue) {
        if (isNotEmpty(str)) {
            String[] arr = str.split(",");
            return isHaveStr(arr, targetValue);
        } else {
            return false;
        }

    }

    /**
     * 判断字符串(','分割)中是否不含有某个字符串
     * */
    public static boolean isNotHaveStr(String str, String targetValue) {
        return !isHaveStr(str, targetValue);
    }

    /**
     * 下划线命名转为驼峰命名
     * @param str 下划线命名的字符串
     * */
    public static String underlineToHump(String str){
        if (isNotEmpty(str)) {
            StringBuilder result=new StringBuilder();
            String a[]=str.split("_");
            for(String s:a){
                if(result.length()==0){
                    result.append(s.toLowerCase());
                }else{
                    result.append(s.substring(0, 1).toUpperCase());
                    result.append(s.substring(1).toLowerCase());
                }
            }
            return result.toString();
        } else {
            return "";
        }

    }

}
